適用於黑盒函數優化問題,特別是在高維和噪聲環境下
pip install gpyopt
import GPyOpt
from GPyOpt.methods import BayesianOptimization
# 定義目標函數
def objective(x):
return (x**2).sum()
# 定義搜索空間
space = [{'name': 'x', 'type': 'continuous', 'domain': (-5,5)}]
# 創建貝葉斯優化對象
optimizer = BayesianOptimization(f=objective, domain=space, model_type='GP')
# 進行優化
optimizer.run_optimization(max_iter=10)
# 輸出結果
print(f'Optimized value: {optimizer.fx_opt}')
print(f'Optimized point: {optimizer.x_opt}')
在這個案例中,我們首先導入了 GPyOpt 庫,並定義了一個簡單的目標函數 objective,這里的目標是最小化 x^2 的和。然後,我們定義了搜索空間,這里是一個連續型變量 x 的範圍為 -5 到 5。
接著,我們創建了一個貝葉斯優化對象 optimizer,並使用 BayesianOptimization 類進行初始化,將目標函數、搜索空間和模型類型(這里是高斯過程模型)作為參數傳遞。
最後,我們調用 optimizer.run_optimization 進行優化,設置了最大叠代次數為 10 次。輸出了最優值和最優點。
白話來說如果你面臨一個黑盒函數優化在高維度和噪聲環境下,可以考慮使用 GPyOpt 進行貝葉斯優化~